<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        //通过把函数用括号括起来，然后结尾添加括号，就可以直接使用函数
        /*
        (function()
        {
            var a=3;
            console.log(a+3);
        })()
        */
        //局部作用域a
        //此时函数内定义的变量a不会作用到全局作用域
        //在全局作用域定义一个变量a
        //console.log(a);
        var a=4;
        console.log(a+3);
        //把函数绑定在window.onload上，这样也可以直接运行该函数
        //不过注意一点，立即执行函数代码执行的优先级要高于window.onload
        window.onload=function()
        {
            console.log("立即执行函数");
        };
        /*
        window.$="给window定义一个属性$";
        console.log(window.$);
        */
        (function()
        {
            var a=1;
            function test()
            {
                console.log(++a);
            }
            window.$=function()
            {
                return
                {
                    test:test
                }
            };
        })()
        //window.$().test(); $是一个函数 $执行后返回的是一个对象
    </script>
</head>
<body>
    <!--
        1.理解
        全称：立即执行函数（Immediately-Invoked Function Expression，IIFE）
        2.作用
        隐藏实现
        不会污染外部（全局）命名空间
    -->
</body>
</html>